home *** CD-ROM | disk | FTP | other *** search
/ Programming in Microsoft Windows with C# / Programacion en Microsoft Windows con C#.iso / Original Code / Paths Regions and Clipping / ClippingCombinations / ClippingCombinations.cs next >
Encoding:
Text File  |  2001-01-15  |  1.8 KB  |  59 lines

  1. //---------------------------------------------------
  2. // ClippingCombinations.cs ⌐ 2001 by Charles Petzold
  3. //---------------------------------------------------
  4. using System;
  5. using System.Drawing;
  6. using System.Drawing.Drawing2D;
  7. using System.Windows.Forms;
  8.  
  9. class ClippingCombinations: PrintableForm
  10. {
  11.      string   strCaption = "CombineMode = ";
  12.      MenuItem miCombineMode;
  13.  
  14.      public new static void Main()
  15.      {
  16.           Application.Run(new ClippingCombinations());
  17.      }
  18.      public ClippingCombinations()
  19.      {
  20.           Text = strCaption + (CombineMode)0;
  21.  
  22.           Menu = new MainMenu();
  23.           Menu.MenuItems.Add("&CombineMode");
  24.  
  25.           EventHandler ehClick = new EventHandler(MenuCombineModeOnClick);
  26.           
  27.           for (int i = 0; i < 6; i++)
  28.           {
  29.                MenuItem mi   = new MenuItem("&" + (CombineMode)i);
  30.                mi.Click     += ehClick;
  31.                mi.RadioCheck = true;
  32.  
  33.                Menu.MenuItems[0].MenuItems.Add(mi);
  34.           }
  35.           miCombineMode = Menu.MenuItems[0].MenuItems[0];
  36.           miCombineMode.Checked = true;
  37.      }
  38.      void MenuCombineModeOnClick(object obj, EventArgs ea)
  39.      {
  40.           miCombineMode.Checked = false;
  41.           miCombineMode = (MenuItem) obj;
  42.           miCombineMode.Checked = true;
  43.  
  44.           Text = strCaption + (CombineMode)miCombineMode.Index;
  45.           Invalidate();
  46.      }
  47.      protected override void DoPage(Graphics grfx, Color clr, int cx, int cy)
  48.      {
  49.           GraphicsPath path = new GraphicsPath();
  50.           path.AddEllipse(0, 0, 2 * cx / 3, cy);
  51.           grfx.SetClip(path);
  52.  
  53.           path.Reset();
  54.           path.AddEllipse(cx / 3, 0, 2 * cx / 3, cy);
  55.           grfx.SetClip(path, (CombineMode)miCombineMode.Index);
  56.  
  57.           grfx.FillRectangle(Brushes.Red, 0, 0, cx, cy);
  58.      }
  59. }